As the computer revolution advances, computer networking has become increasingly important. In recent years the number of computers which are connected to computer networks has increased rapidly. Not only are computers being connected to local networks, which might exist in a given building or group of buildings, but also wide area networks, which commonly connect local area networks in widely separated locations, such as the different facilities of a large corporation. In fact, within the last several years it has become increasingly common for computers to be hooked up to a global network formed of a large number of sub-networks called the Internet. As a constantly higher percent of computers are connected to this one large network of networks, it will become increasingly possible for almost any computer to electronically communicate with almost any other computer, no matter where those two computers are located in the world.
FIG. 1 illustrates some prior art computer networks, including a local area inter-network 64. FIG. 1 also schematically represents the Internet 58, which is a global inter-network, and a second local network include to relatively high speed asynchonous tranfer mode or ATM networks 66D and 66E.
The nodes of the networks shown in FIG. 1 include end systems 50 and routers 52. End systems are computers which send and receive messages, but which are not intended to route messages originated on other computers. Routers usually do not originate messages, other than those necessary to support their routing function. Since routers are normally special purpose machines dedicated to the sole function of routing, it is uncommon for a computer to be both a router and an end system.
Each router is designed to be connected to multiple different individual physical networks, such as the physical networks 66A, 66B, and 66C shown in FIG. 1. They route message between the individual physical networks they connect. This is called inter-networking. A group of routers using a common network protocol enable a group of individual physical networks which they connect to operate as a single logical network, or inter-network.
A router's major function is to route messages which are sent to it. This routing uses two addressing schemes, the hardware dependent physical addresses on the individual physical networks directly connected to it, and the hardware independent network-level addresses which represent addresses in the logical network. Network-level addressing provides an inter-network wide addressing scheme. It allows inter-networking between individual physical networks whose individual addressing scheme cannot handle addresses outside their individual networks. It also allows inter-networking between physical networks using different addressing schemes.
A router performs routing by reading the network-level destination address of a message sent to it. It determines if that network-level address corresponds to a system on one of the individual physical networks connected to the router. If so, the router sends the message out on that physical network, containing not only the end system's network-level destination address, but also usually its physical-level address, so the hardware on the addressed system will know the message is for it.
If a message received by the router has a network-level destination address not corresponding to any system on one of the physical networks connected to the router, the router sends the message out to another router on one of its connected physical networks, normally the one it thinks is closest to the message's network-level destination address. Usually this message is sent out with the message's original network-level destination address and the physical address of the router to which the message is being sent for further routing. This process of routing is normally repeated until the message completes its journey from the end system that originated it to the end system specified in its original network-level destination address.
In FIG. 1 the end system 50A is connected through a dial-up modem 54, and telephone network 56, to the modem 53 of a an Internet provider router 52A, which is connected to, and thus part of, the Internet 58. This enables the end system 50A to send and receive messages to and from any other end system 50 connected to the Internet 58, such as end system 50C in FIG. 1. Internet provider routers normally have multiple modems 53 through each of which they can send and receive data from a separate end system. They provide Internet access to end systems which have no permanent Internet connection or address. Such Internet provider routers normally are connected to one or more other routers in the Internet with a high speed digital line 60.
The end system 50B, shown in FIG. 1, is a so-called multi-homed end system because it has more than one network level address (or home) on the inter-network. Like the end system 50A it is also shown connected through a dial-up modem 54, to a modem 53 of the Internet provider router 52A, which effectively connects it to the Internet. But the end system 50B is also shown connected through an ethernet hardware interface 62 to a local inter-network 64, such as that which might exist in an office. As shown, in FIG. 1, this local inter-network includes three individual physical ethernet networks, 66A, 66B, and 66C, which are connected by two ethernet routers 52B and 52C. When the end system 50B sends out a message, its network protocol software determines if the message is addressed to an end system on the local inter-network 64, in which case it sends it out over its ethernet interface 62. Otherwise it sends the message out over the modem to the Internet provider router 52A, which will attempt to route it toward the end system on the Internet addressed in the message.
For computers to communicate with each other over a computer network they need to share common conventions, called network protocols, so they will be able to understand each other. There are many different network protocols, but currently probably the most rapidly growing protocol is the TCP/IP protocol. This is because it is the protocol which is currently used on the Internet. In fact, the "IP" in TCP/IP stands for "Internet protocol".
TCP/IP is actually a family of protocols and associated software capabilities. It is well known in the art of computer networking, and is sold in varying form by many different vendors for many different types of computers.
TCP/IP is a layered network protocol, as is indicated in FIG. 2. Because of the complexity of network software it is beneficial to write it in a modular fashion. It is also advantageous to write network software in layers, so that as applications, operating system software, network technology, and network hardware change, only the layers directly involved with the change need to be modified. Such a layered structure of network protocol software is called a protocol stack.
FIG. 2 shows the well known Open System Interconnection Reference Model, or the OSI model, 68 which defines seven layers of software functionality used to perform network communication. The OSI model is important because it provides a common mental model used by many people in the network field. The OSI model's seven layers protocol stack includes an application layer 70, presentation layer 72, session layer 74, transport layer 76, network layer 78, data link layer 80, and physical layer 82.
The application layer 70 is the software whose communications needs are being served by the other six layers of the protocol stack. It is the ultimate generator and receiver of all messages, other than those generated by lower levels for the purpose of supporting the communication by the application layer. The application layer includes applications, such as e-mail, file transfer, or any other end user application which uses network communications.
The presentation layer 72 performs the task of converting data between the particular format used by a given application in the application layer and the uniform format used by the lower levels of the protocol stack.
The session layer 74 coordinates communication between different applications by keeping track of the transmission and receipt of data between them.
The transport layer 76 establishes, maintains, and terminates communication between two machines, verifying that data sent is correctly received, and, if it is not correctly received, causing it to be resent.
The network layer 78 provides most of the function of routing messages between machines on an inter-network, described above. This is particularly important on huge networks, such as the Internet, where the source end system often does not know where the destination end system is located, where no one system knows the entire topology of the network, and where the network is constantly being change by the addition and subtraction of new routers, sub-networks, and end systems.
The data link layer controls the physical layer, correcting transmission error caused by the physical layer and its associated physical transmission hardware.
Finally, the physical layer is the software which deals with the actual mechanical and electronic receipt of data on a given physical network.
FIG. 2 shows how the TCP/IP protocol stack 84 corresponds to the seven layer OSI model. The TCP/IP stack has only four layers, an application layer 86, a transport layer 88, an Internet layer 90, and a network interface physical layer 92.
The TCP/IP application layer 86 corresponds to the OSI model application, presentation, and session layers. That means applications designed to run on the TCP/IP stack should perform all the functions associated with those top three OSI model layers.
The TCP/IP transport layer 88 corresponds to the transport layer 76 of the OSI model. Two different transport layer protocols are commonly used in TCP/IP stacks, TCP, or transmission control protocol, 88A, and UDP, or user datagram protocol 88B. TCP provides a more complicated, but more reliable, type of communication between two end systems. In TCP each process of communication between a computational entity on one end system and a computational entity on a remote end system is represented as a connection, which has associated data structures in the TCP layers of both of those end systems dedicated to keeping track of that communication process, for verifying that it takes place as intended, and for re-transmitting if it does not. UDP is a more simple, but less reliable, communication scheme which merely sends data to a destination machine without any confirmation that, or of how, it is received.
The Internet layer 90 of the TCP/IP protocol stack is normally comprised of the Internet protocol and the Internet control message protocol, indicated by the "IP" and "ICMP", respectively, in FIG. 2. The Internet protocol does the actual routing of messages. It includes a routing table 94, which contains routing information used by the IP layer to route individual outgoing messages received from TCP or UDP, based on the destination address associated with that message. ICMP is part of the Internet protocol which communicates between IP software running on different machines to report errors, such as time-outs or problems with delivery.
The network interface physical layer 92 of the TCP/IP stack performs the functions of both the data link and physical layers 80 and 82 of the OSI model. It contains the software which is specific to a given type of physical network, such as ethernet, Asynchronous Transfer Mode (ATM), or the Point to Point Protocol (PPP) used with dial-up modems.
TCP/IP protocol stacks normally come with a family of related software applications which run in the application layer 86. These include applications 86C shown in FIG. 2 which use TCP's more reliable communications services. Among such TCP-using applications are Telnet, which enables an end system to operate as a terminal for a different, remote end system; File Transfer Protocol (FTP), which lets an end system send or receive files to or from a remote end system; and Simple Mail Transfer Protocol, which performs e-mail functions.
The application layer programs 86D shown in FIG. 2 use UDP's less reliable, but more efficient services. They include Domain Name System (DNS), which automatically searches the net to obtain the information necessary to convert from a text-based Internet address name, of the type used in business cards or in advertised World Wide Web URLs, to a thirty-two bit binary number representing the actual Internet address; and Network File System, which lets a first end system access files located on a second, remote, end system almost as if they were located on the first system's hard drive.
In addition to the standard TCP/IP applications, which use either TCP or UDP communication services, other applications 86A or 86B, written either by users, their companies, or software vendors can use the TCP/IP stack directly, or through standard TCP/IP application level utilities. For example, World Wide Web Browsers do most, if not all, of their Internet communication using the HyperText Transfer Protocol (HTTP). HTTP is an application level software protocol defined for use with TCP.
FIG. 3 shows how transmitted data travels up and down the TCP/IP stack. In the example shown, the TCP protocol is used in the transfer layer and PPP is used in the network interface physical layer. When a block of data 96 is sent from the application layer 86 to the TCP layer 88, the TCP layer responds by sending the block of data preceded by a TCP header 98 to the IP layer.
The TCP header includes a source port field 100 and a destination port field 102. The TCP layer creates a separate source port 104 for each separate computational entity 106 in its associated application layer communicating over the Internet, and the TCP layer communicates with each such computational entity 106 through its associated port 104. Thus, the source port field 100 in the TCP header identifies the individual computational entity on the TCP layers machine which has originated a message being sent down the protocol stack. The destination port field 102 identifies the computational entity in the application layer of the remote machine to which the message is being sent to which the message should be directed by that remote machine's own TCP layer.
The TCP layer associates a "socket" 108 for each process of communications between computational entities in the application layers of two different end systems. Each such "socket" is defined by a source port, a source Internet protocol, or IP, address, a destination port, and a destination IP address, shown as "SP", "SA", "DP", and "DA", respectively, in FIG. 3. The TCP layer maintain a connection table 110 which keeps track of each of its active sockets.
TCP/IP has a defined interface, called the socket interface, through which applications can open and close sockets and write and read data to and from them. A given application can have more than one socket. For example, in HTML, the HyperText Mark-up Language, used to represent pages on the World Wide Web, not only is each web page a separate file, but each object within that page, such as graphic, video, or audio object, is also a separate file. The popular Netscape web browser currently creates a separate socket for each separate file object needed to render a web page, up to a limit of twenty.
When the TCP layer 88 sends a TCP message 96A to the IP layer 90, it also sends other data 112 to the IP layer in conjunction with that message. This other data includes the source IP address 114 (if the TCP layer knows it) and the destination IP address 116 associated with the message's corresponding socket. Each of these IP addresses holds a thirty-two bit number which uniquely identifies a computer on the Internet.
When the IP layer receives an outgoing TCP message 96A and its associated data 112 it creates a corresponding IP message which includes the TCP message preceded by an IP header 118. The IP header includes the message's associated source and destination IP addresses in fields 114A and 116A, respectively. The IP layer sends this IP message 96B to the network interface physical layer, which, in our example, is a PPP layer 92B, the major type of network interface physical layer commonly used by dial-up modems.
When the network interface physical layer receives an IP message it generates a corresponding physical layer message 96C which includes the IP message with a physical layer header, or with both a physical layer header and a trailer, added. PPP adds both a header 120 and a trailer 122. Once the network interface physical layer has produced an output message, that outgoing message is transmitted over its corresponding physical network connection, which in FIG. 3 is a modem 54.
When an incoming message is received at the bottom of the stack from the physical network, it passes up the stack in the reverse order to that just described, with the headers and, if any, trailers associated with each layer being stripped off before it is handed to the layer above. Once the incoming message gets to the TCP layer, the TCP layer strips off the TCP header and delivers the message through the port indicated in the TCP header to the port's associated computational entity in the application layer.
As shown in FIG. 1, TCP/IP end systems include an application layer 86 with one or more computational entities to be serviced by the protocol stack, a TCP layer 88 (which also includes UDP), and IP layer 90, a physical layer 92, such as a PPP layer 92B, an ethernet layer 92C, a T3 layer 92D. The protocol stacks of TCP/IP Routers, on the other hand, normally only include a physical layer 92 and an IP layer 90. This is because routing functions do not require any protocol stack levels higher than the IP layer, which is dedicated to network-level routing.
When a router receives an incoming message from a given one of its physical interfaces, it send the message up through the interface's associated network interface physical layer 92. This layer strips off the message's physical layer header and trailer, if any, and sends the message up to the IP layer 90. The IP layer then decides, based on the destination IP address contained in the message's IP header and on information in the IP level's routing table, to which end system or router the message should be sent. It then sends the message back down to the network interface physical layer 92 associated with the physical network over which the message is to be transmitted. The network interface physical layer then adds a new physical layer header and, in many cases trailer, to the message. This header indicates the physical address of the next hop in the message's routing. Then the message is transmitted out over the selected physical interface.
FIGS. 4 and 5 refer to the end system 50A, of FIG. 1, whose only network connection is through a modem to an Internet provider router 52A. FIG. 4 shows the Internet protocol, or IP, address, 204.71.165.17, associated with the end system and the IP address, 204.70,57.235, associated with the Internet provider router 52A. These Internet address are shown in an octet representation in which each of the four eight-bit bytes of the thirty-two bit IP address actually used TCP/IP software, is represented by its corresponding decimal value separated by a period.
The IP address of the Internet provider router 52A is fixed, since that router has a fixed, high-speed connection link to the rest of the Internet. The IP address of the end system 50A, however, is a dynamically assigned address which is assigned to the end system 50A by the cooperation of the PPP protocol layer 92B on that end system and the PPP protocol layer 92B' on the Internet provider router 52A. This address is dynamically assigned in the initial handshaking which takes place between the two system's modems when a dial-up connection is first made between them. This address is dynamically allocated both to prevent the wasting of IP addresses, since most machines which use modems to connect to the Internet are only connected to it a small fraction of the time, and because the same modem may connect to the Internet through different Internet provider routers at different times. Since, Internet addresses are normally somewhat hierarchical, dynamic assignment makes it possible for the temporary IP address allocated to an end system's modem to be hierarchically related to that of the router to which it is directly connected. This allows the Internet's routers to know that messages addressed to the end system's IP address should be routed through the router to which it is directly connected.
FIG. 5 shows the routing table 94A contained in the IP layer of the end system 50A when it is connected as in FIG. 4. The routing table can be used to perform several functions in TCP/IP systems. The first is first-hop routing, that is, the designation of to which machine located on an individual physical network connected to the current system a given IP message should be directed by the physical layer. The second is the selection of which soure IP address should be associated with a given message. This function is particularly necessary in end systems which are "multi-homed", that is, which have more than one physical network interface, each with a separate associated IP address. The end system 50A discussed with regard to FIGS. 4 and 5 is not multi-home, but the end system 50B discussed below with regard to FIGS. 6 and 7 is.
TCP/IP routing tables include an entry for each of one or more destination address specifications included in the destination column 126. Each such destination address specification can be a unique IP address, a range of IP addresses, or a so-called "default" value.
A range of IP addresses is normally indicated in the destination column by specifying the highest order digits of an Internet address, but leaving the lower order digits unspecified. This can be done in octet representation by placing a non-zero value in each of one or more of the high order octets of a destination address, but zeros in the remaining lowest order octets. When this is done, any destination address matching all of the non-zero highest order octet's digits will match the routing table entry.
A default routing table entry is one to be associated with any messages whose destination address do not match the destination address or address range of any of the other routing table entries. A default value can be represented in octet representation by "0.0.0.0". All routing tables should include a default entry, and they are necessary in the routing table of any system which is to be connected to a network such as the Internet, which might contain machines whose addresses do not correspond to any specific address or address range contained in the destination column of the routing table.
Each routing table entry also includes a Gateway column 128 which gives the next IP address through which the message should be routed to get to its destination IP address. Each entry also includes an interface column 130 which indicates the physical port through which the message should exit the end system to get to, or to go through, the IP address in the Gateway column.
When an end system's PPP layer 92B makes a connection through a modem 54 with the PPP layer 92B' of an Internet provider router 52A, the PPP handshaking used to establish that connection gives the end system's PPP layer the IP address of the Internet provider router and the IP address dynamically assigned to the end system's PPP network interface by the router. Once it has received these IP addresses, the end system's PPP layer calls standard TCP/IP functions to create two routing table entries, a static entry 132 and a default entry 134.
The static entry 132 has the IP address of the Internet provider router to which the end system is being connected in the destination column. In the gateway column this entry has the IP address of the network interface which has been dynamically assigned to the end system's modem. This is done because any message to the IP address of the Internet provider router has to use as a source IP address the dynamically assigned IP address associated with the end system's own modem.
The entry 134 is a default entry. It has a default value, usually 0.0.0.0, in the destination column and the IP address of the Internet provider router in the gateway column.
When the IP layer receives an outgoing message having a destination IP address equal to that of the Internet provider router, it will use the routing table static entry 132 having that destination address. In that case it will send the message out through the PPP network interface associated with the IP address shown in that entry's gateway column, and it will use that gateway address as the message's source IP address.
If the outgoing message's destination IP address does not equal that of the Internet provider router, the default entry 134 will be used instead. This entry has the IP address of the Internet provider router in its gateway column. The IP layer then scans down the routing table a second time, in a manner similar to that described in the paragraph above, to see which IP address should be used as the source IP address for the message.
FIGS. 6 and 7 are similar to FIGS. 4 and 5, except that they illustrate the connections of the multi-homed end system 50B, of FIG. 1, which is connected to the local inter-network 64 through an ethernet connection as well as to the Internet 68 through an Internet provider router 52A. FIG. 6 is similar to FIG. 4, except that the IP address dynamically assigned to the end system 50B differs in the last octet from that assigned by the same Internet provider router to the end system 50A, and except that it shows the fixed IP address associated with the end system 50B's network interface to its local area inter-network 64 shown in FIG. 1.
FIG. 7 shows a routing table 94B which has a static entry 132A and a default entry 134A. These entries are identical to the entries 132 and 134 shown in routing table 94A of FIG. 5, except for the difference in the last octet of the dynamically assigned network interface IP address associated with the end system's modem shown in the gateway column of entry 132A. The table 94B also differs from the table 94A shown in FIG. 5 by its inclusion of an additional static entry 136. Static routes are often created by a network system administrator to reflect that administrator's knowledge of the network to which the system containing the routing table is connected.
In the example, the static entry 136 states that all messages having a destination address in the range 121.10.0.0 to 121.10.255.255 should go through the end system's network interface having the IP address 121.10.26.4. This is the fixed IP address associated with the network interface of the end system 50B's ethernet connection. In the example, this value has been assigned to the routing table entry associated with the end system's ethernet connection because that is the address range associated with the local area network 64 to which that ethernet connection leads.
TCP/IP systems function amazingly well, particularly considering many of their aspects were designed long before many of their innovators envisioned that computer networks would ever grow to the size and complexity of the current Internet. But as inter-network usage evolves, there is an increasing trend for the number and size of data objects accessed over inter-networks to increase. This is particularly true with regard to Internet usage involving the World Wide Web, where graphical, audio, or video objects have to be frequently accessed to fully enjoy what the Web has to offer.
The problem is that the connections of most end systems to their associated networks do not have a high enough bandwidth to allow users to communicate as quickly as they would like. This is particularly true for users who are connected to the Internet or to other networks through dial-up modems. This is because the current 28.8 kbit data rate of most good modems is too slow to enable satisfactory browsing of the World Wide Web. Even the approximately 128 kbit ISDN communication rates which are expected to become common shortly is not a high enough data rate to properly use the Web. Furthermore, even if a given system has a high bandwidth connection, such as a cable modem or SONET link, to the Internet through a given router, that given router, itself, might not have enough bandwidth to the rest of the Internet to supply all the machines which are attempted to communicate through it with satisfactory communications rates. As a result of such network bottleneck on the other side of the given router, the given system's effective communications bandwidth with the Internet, as a whole, can be much lower than the capacity of its link to the given router.
Such issues of bandwidth are not only of concern in systems designed to use computer networks. They can also be of concern in systems designed to tests various parts of such a network. For example, the prior art has developed systems for load testing, that is, testing how an individual network nodes responds when large amounts of traffic are routed to or through them. To perform such tests it is desirable to be able to generate large amount of traffic addressed toward a given location. Because of the bandwidth limitations of many individual computers which seek to generate such load testing traffic, the prior art has often had to use many computers connected together to generate the high amount of traffic necessary to test how a system will respond to large usage. This is particularly true in the testing of network nodes using dial-up telephone communication.